package com.atguigu.file;

import org.junit.Test;

import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class FileReaderWriterTest {
    public static void main(String[] args){
        File file=new File("hello.txt"); //相较于当前工程
        System.out.println(file.getAbsolutePath());
        File file1=new File("day06\\hello.txt");
        System.out.println(file1.getAbsolutePath());
    }
    /*
    将day06下的hello.txt文件内容读入程序中，并输出到控制台
     */
    @Test
    public void test(){
        FileReader fileReader= null;
        try {
            //1.实例化File类的对象，指明要操作的文件
            File file=new File("hello.txt");  //相较于当前module
            //2.提供具体的流
            fileReader = new FileReader(file);
            //3.数据的读入过程
            //read():返回读入的一个字符，如果达到了文件的末尾，则返回一个-1
            //int data =fileReader.read();
            //while(data!=-1){
            //System.out.print((char) data+"  ");
            // data=fileReader.read();
            //}
            //方式二
            int data;
            while((data=fileReader.read())!=-1){
                System.out.println((char)data);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        //4.流的关闭操作
        finally {
            try {
                fileReader.close(); //手动的进行关闭
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    //对read方法的操作升级:使用read的重载方法
    @Test
    public void test1(){
        FileReader fr=null;
        try {
            //1.File类的实例化
            File file=new File("hello.txt");
            //2.FileReader流的实例化
            fr=new FileReader(file);
            //3.读入操作
            //read(char[] cbuffer):返回每次读入到数组中字符的个数,如果达到文件末尾，返回-1
            char[] cbuffer=new char[5];
            int len;
            while((len=(fr.read(cbuffer)))!=-1){
                for(int i=0;i<len;i++){
                    System.out.println(cbuffer[i]);
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        //4.资源关闭
        finally {
            try {
                fr.close();
            } catch (IOException a) {
                a.printStackTrace();
            }
        }
    }
}
